cmake_minimum_required(VERSION 3.0)# 配置文件版本
project(chat) # 项目名称，最近一次调用project()命令，指定PROJECT_SOURCE_DIR和PROJECT_BINARY_DIR

#g++编译命令中的选项顺序问题，可以明确两点:1、g++命令会先处理所有的编译选项，2、链接库的位置，需要放在依赖它的源文件之后

# g++ <-o> <outfile/target> <source> <-llib> <-Lpath> <-Ipath>  
# 配置编译选项
# set(CMAKE_CXX_FLAGS "$(CMAKE_CXX_FLAGS) ") #相当于g++ -g,在CMAKE_CXX_FLAGS添加 添加-g
set(CMAKE_BUILD_TYPE "Debug")


# 添加头文件搜索的路径
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/include/server)
include_directories(${PROJECT_SOURCE_DIR}/include/server/mysqldb)
include_directories(${PROJECT_SOURCE_DIR}/include/server/model)
include_directories(${PROJECT_SOURCE_DIR}/include/server/middleware)
include_directories(${PROJECT_SOURCE_DIR}/include/server/muduo) 

include_directories(${PROJECT_SOURCE_DIR}/third_part)
include_directories(/usr/local/include)

# 添加目标文件数据目录
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
# 添加库文件数据目录
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
# 设置中间产物的build 目录
set(CMAKE_BINARY_DIR ${PROJECT_SOURCE_DIR}/build)

# 加载子目录
add_subdirectory(src)

# 1. 项目基本信息变量（高频使用）
# PROJECT_SOURCE_DIR: 项目源代码根目录路径，用于构建文件路径
# PROJECT_BINARY_DIR: 项目构建输出目录路径
# 2. 编译配置变量（高频使用）
# CMAKE_CXX_FLAGS: C++ 编译器标志，用于设置编译选项（如 -g 调试信息）
# CMAKE_C_FLAGS: C 编译器标志
# CMAKE_BUILD_TYPE: 构建类型（Debug、Release等）
# 3. 输出路径变量（中频使用）
# EXECUTABLE_OUTPUT_PATH: 可执行文件输出目录
# LIBRARY_OUTPUT_PATH: 库文件输出目录
# 4. 路径相关变量（高频使用）
# CMAKE_SOURCE_DIR: 顶层源代码目录
# CMAKE_BINARY_DIR: 顶层构建目录
# CMAKE_CURRENT_SOURCE_DIR: 当前处理的 CMakeLists.txt 所在目录
# 5. 系统信息变量（根据需要使用）
# CMAKE_SYSTEM_NAME: 目标系统名称
# CMAKE_SYSTEM_VERSION: 目标系统版本
# CMAKE_HOST_SYSTEM_NAME: 主机系统名称
# 6. 编译器相关变量（根据需要使用）
# CMAKE_CXX_COMPILER: C++ 编译器路径
# CMAKE_C_COMPILER: C 编译器路径